package com.ruoyi.platform.domain;

import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

/**
 * 【请填写功能名称】对象 m_execute_command
 *
 * @author dataControl
 * @date 2025-09-15
 */
public class MExecuteCommand implements Serializable {
    public Integer getCommandResultExecutionStatus() {
        return commandResultExecutionStatus;
    }

    public void setCommandResultExecutionStatus(Integer commandResultExecutionStatus) {
        this.commandResultExecutionStatus = commandResultExecutionStatus;
    }

    /**
     * 系统编号
     */
    private Long commandId;

    public Long getCommandResultId() {
        return commandResultId;
    }

    public void setCommandResultId(Long commandResultId) {
        this.commandResultId = commandResultId;
    }

    /**
     * 指令执行结果编号
     */
    private Long commandResultId;

    /**
     * 仓库ID
     */
    @Excel(name = "仓库ID")
    private Long storeId;

    /**
     * 仓库名称
     */
    @Excel(name = "仓库名称")
    private String storeName;

    /**
     * 仓库编码
     */
    @Excel(name = "仓库编码")
    private String storeCode;

    /**
     * 监控设备ID
     */
    @Excel(name = "设备ID")
    @NotNull(message = "监控设备ID不能为空")
    private Long equipmentId;

    /**
     * 仓库名称
     */
    @Excel(name = "设备名称")
    private String equipmentName;

    /**
     * 仓库编码
     */
    @Excel(name = "设备编码")
    private String equipmentCode;

    /**
     * 仓位ID
     */
    @Excel(name = "仓位ID")
    @NotNull(message = "仓位ID不能为空")
    private Long storeLocationId;

    /**
     * 仓位名称
     */
    @Excel(name = "仓位名称")
    private String storeLocationName;

    /**
     * 仓位编码
     */
    @Excel(name = "仓位编码")
    @NotEmpty(message = "仓位编码不能为空")
    private String storeLocationCode;

    /**
     * 指令类型
     */
    @Excel(name = "指令类型")
    @NotNull(message = "指令类型不能为空")
    private Integer commandType;

    /**
     * 指令内容
     */
    @Excel(name = "指令内容")
    private String commandContent;

    /**
     * 指令执行时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "指令执行时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date commandExecuteTime;

    /**
     * 指令执行状态
     */
    @Excel(name = "指令执行状态")
    private Integer commandExecutionStatus;

    /**
     * 重试次数
     */
    @Excel(name = "重试次数")
    private Integer retryCount;

    /**
     * 预警状态
     */
    @Excel(name = "预警状态")
    private Integer warningStatus;

    /**
     * 巡检时仓位状态
     */
    @Excel(name = "巡检时仓位状态")
    private Integer inspectionStatus;

    /**
     * 巡检时仓位货物数量
     */
    @Excel(name = "巡检时仓位货物数量")
    private Integer inspectionQuantity;

    @Excel(name = "指令执行结果状态")
    private Integer commandResultExecutionStatus;

    /**
     * 巡检人
     */
    @Excel(name = "巡检人")
    private String inspectionOperator;

    public MMonitoringEquipment getEquipment() {
        return equipment;
    }

    public void setEquipment(MMonitoringEquipment equipment) {
        this.equipment = equipment;
    }

    public MStoreLocation getLocation() {
        return location;
    }

    public void setLocation(MStoreLocation location) {
        this.location = location;
    }

    public MExecuteCommandResult getExecuteCommandResult() {
        return executeCommandResult;
    }

    public void setExecuteCommandResult(MExecuteCommandResult executeCommandResult) {
        this.executeCommandResult = executeCommandResult;
    }

    private MMonitoringEquipment equipment;

    private MStoreLocation location;

    private MExecuteCommandResult executeCommandResult;

    /**
     * 指令执行开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "指令执行开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date executeStartTime;

    /**
     * 指令执行结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "指令执行结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date executeEndTime;

    public Long getStoreId() {
        return storeId;
    }

    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    public String getStoreName() {
        return storeName;
    }

    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }

    public String getStoreCode() {
        return storeCode;
    }

    public void setStoreCode(String storeCode) {
        this.storeCode = storeCode;
    }

    public String getEquipmentName() {
        return equipmentName;
    }

    public void setEquipmentName(String equipmentName) {
        this.equipmentName = equipmentName;
    }

    public String getEquipmentCode() {
        return equipmentCode;
    }

    public void setEquipmentCode(String equipmentCode) {
        this.equipmentCode = equipmentCode;
    }

    public String getStoreLocationName() {
        return storeLocationName;
    }

    public void setStoreLocationName(String storeLocationName) {
        this.storeLocationName = storeLocationName;
    }

    public Date getExecuteStartTime() {
        return executeStartTime;
    }

    public void setExecuteStartTime(Date executeStartTime) {
        this.executeStartTime = executeStartTime;
    }

    public Date getExecuteEndTime() {
        return executeEndTime;
    }

    public void setExecuteEndTime(Date executeEndTime) {
        this.executeEndTime = executeEndTime;
    }

    public String getContent() {
        return Content;
    }

    public void setContent(String content) {
        Content = content;
    }

    /**
     * 指令执行结果
     */
    @Excel(name = "指令执行结果")
    private String Content;

    public void setCommandId(Long commandId) {
        this.commandId = commandId;
    }

    public Long getCommandId() {
        return commandId;
    }

    public void setEquipmentId(Long equipmentId) {
        this.equipmentId = equipmentId;
    }

    public Long getEquipmentId() {
        return equipmentId;
    }

    public void setStoreLocationId(Long storeLocationId) {
        this.storeLocationId = storeLocationId;
    }

    public Long getStoreLocationId() {
        return storeLocationId;
    }

    public void setStoreLocationCode(String storeLocationCode) {
        this.storeLocationCode = storeLocationCode;
    }

    public String getStoreLocationCode() {
        return storeLocationCode;
    }

    public void setCommandType(Integer commandType) {
        this.commandType = commandType;
    }

    public Integer getCommandType() {
        return commandType;
    }

    public void setCommandContent(String commandContent) {
        this.commandContent = commandContent;
    }

    public String getCommandContent() {
        return commandContent;
    }

    public void setCommandExecuteTime(Date commandExecuteTime) {
        this.commandExecuteTime = commandExecuteTime;
    }

    public Date getCommandExecuteTime() {
        return commandExecuteTime;
    }

    public void setCommandExecutionStatus(Integer commandExecutionStatus) {
        this.commandExecutionStatus = commandExecutionStatus;
    }

    public Integer getCommandExecutionStatus() {
        return commandExecutionStatus;
    }

    public void setRetryCount(Integer retryCount) {
        this.retryCount = retryCount;
    }

    public Integer getRetryCount() {
        return retryCount;
    }

    public void setWarningStatus(Integer warningStatus) {
        this.warningStatus = warningStatus;
    }

    public Integer getWarningStatus() {
        return warningStatus;
    }

    public void setInspectionStatus(Integer inspectionStatus) {
        this.inspectionStatus = inspectionStatus;
    }

    public Integer getInspectionStatus() {
        return inspectionStatus;
    }

    public void setInspectionQuantity(Integer inspectionQuantity) {
        this.inspectionQuantity = inspectionQuantity;
    }

    public Integer getInspectionQuantity() {
        return inspectionQuantity;
    }

    public void setInspectionOperator(String inspectionOperator) {
        this.inspectionOperator = inspectionOperator;
    }

    public String getInspectionOperator() {
        return inspectionOperator;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("commandId", getCommandId())
                .append("equipmentId", getEquipmentId())
                .append("storeLocationId", getStoreLocationId())
                .append("storeLocationCode", getStoreLocationCode())
                .append("commandType", getCommandType())
                .append("commandContent", getCommandContent())
                .append("commandExecuteTime", getCommandExecuteTime())
                .append("commandExecutionStatus", getCommandExecutionStatus())
                .append("retryCount", getRetryCount())
                .append("warningStatus", getWarningStatus())
                .append("inspectionStatus", getInspectionStatus())
                .append("inspectionQuantity", getInspectionQuantity())
                .append("inspectionOperator", getInspectionOperator())
                .toString();
    }
}
